/**
 * Created with Interllij IDEA.
 * Descriptiption:运算符和逻辑程序逻辑控制
 * User: 王澄慧
 * Date: 2022-04-01
 * Time: 10:30
 */
public class FourthDemo {
    public static void main10(String[] args) {
        int a = 10;
        int b = 20;
        int c = a + (b - a) >> 1; // + 优先级要高于 >>
        System.out.println(c);
        int d = a + ((b - a) >> 1); //在存在歧义的代码中加入括号
        System.out.println(d);
    }
    public static void main9(String[] args) {
        int a = 3;
        int b = 5;
        int max = a > b?a : b;
        System.out.println(max); // 输出结果为 5
       // int c = a > b?1 : 2.0; // 表达式2和表达式3的结果须是同类型的，除非能发生隐式类型转换
        //a > b?a : b;          // 表达式不能单独存在，其产生的结果必须要被使用
    }
    public static void main8(String[] args) {
        int b = 0xffffff0;
        System.out.println(b >>> 1);
        int a = 0x11;
        System.out.printf("%x\n",a >> 1);
        System.out.printf("%x\n",a << 1);
    }
    public static void main(String[] args) {
        int d = 0x5;
        int f = 0x4;
        System.out.printf("%x\n",d^f);
        int c = 0xf; // ox表示16进制位，oxf标售10进制的15，即1111
        System.out.printf("%x\n",~c); //printf能够格式化输出内容，%x表示按照16进制输出
        int a = 5;
        int b = 11;
        System.out.println(a | b);
        System.out.println(a & b);
    }
    public static void main6(String[] args) {
        int a = 2;
        System.out.println(!(a == 2)); //a == 2 为true，取!则为false
        System.out.println(!(a != 2)); // a != 2为false,取!则为true
        int b = 3;
        System.out.println(a == 2 || b == 3); // 左右都为真，结果为真
        System.out.println(a == 1 || b == 3); // 左为假右为真，结果为真
        System.out.println(a == 2 || b == 1); // 左为真右为假，结果为真
        System.out.println(a == 3 || b == 1); // 左右都为假，结果为假
        System.out.println(a == 2 && b == 3); //左边为真，右边也为真，结果为真
        System.out.println(a == 3 && b == 3); // 左边为假，右边为真，结果为假
        System.out.println(a == 2 && b == 1); // 左边为真，右边为假，结果为假
        System.out.println(a == 1 && b == 1); // 左右都为假，结果为假

    }
    public static void main5(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a == b); // false
        System.out.println(a != b); //true
        System.out.println(a < b); //true
        System.out.println(a > b); //false
        System.out.println(a <= b); // true
        System.out.println(a >= b); // false
        //当进行多次判断时，不能连写关系运算符，如 3<a<30
    }
    public static void main4(String[] args) {
        int a = 1 ;
        ++a; //前置++，表示给a的值+1，a=a+1=2；
        System.out.println(a); // 输出为2
        System.out.println(++a); // 先加后用 ，先给变量+1，即a=a+1,在使用变量中的值，因此输出为3
        /*a++; //后置++ ,表示给a的值加，a = a+1=2；
        System.out.println(a++); //先用后加，先使用变量原来的值，再给变量+1
        System.out.println(a); //输出3*/

    }
    public static void main3(String[] args) {
        int a = 3;
        int b = 0;
        System.out.println(a / b);
        System.out.println(a % b);
        System.out.println(2 + 2.3);
        System.out.println(11.6 % 3);
        System.out.println(a / b); //数学中应为1.5，但在Java int 除以 int 还是 int类型,会自动舍弃小数
        System.out.println(a / b); // 结果为0
        //想要得到数学中的结果，需要用double类型
        double c = a / b;


    }
    public static void main2(String[] args) {
        int a = 12;
        a += 1; // a = a + 1
        System.out.println(a);
        a -= 2; // a = a - 2
        System.out.println(a);
        a *= 3; // a = a * 3
        System.out.println(a);
        a /= 4; // a = a / 3
        System.out.println(a);
        a %= 5; // a = a % 5
        System.out.println(a);
    }
    public static void main1(String[] args) {
        int a = 10;
        int b = 5;
        System.out.println(a + b); //加
        System.out.println(a - b); //减
        System.out.println(a * b); //乘
        System.out.println(a / b); //除
        System.out.println(a % b); //模

    }
}
